//	scheme.js

function Scheme() {
	var scheme = [];
	var elements = [];
	var lastId = 0;

	var object = undefined;
}

Scheme.prototype.register = function(el) {
	this.elements.push(el);

	var len = this.scheme.length;
	var obj = el.obj;

	for (var i = 0; i < len; i++) {
		this.scheme[i];
	}

	return lastId++;
};

Scheme.prototype.getIndexByElement = function(el) {
	for (var i = 0; i < this.elements.length; i++) {
		if (el == this.elements[i]) {
			return i;
		}
	}
};

Scheme.prototype.stopCreation = function () {
	var canvas = document.getElementById("true_canvas");
	console.log(canvas.removeEventLisner);

	canvas.removeEventLister("click");
	canvas.removeEventLister("mousemove");

	scheme.object = undefined;
}

//
//	Каждая функция вида create*() меняет поведение функций обратного вызова, что приводит
//	к созданию нового объекта и изменению объекта scheme.

Scheme.prototype.createWire = function () {
	this.stopCreation();
	this.object = new Wire();

	var canvas = document.getElementById("true_canvas");

	console.log(canvas);

	canvas.addEventLister("click", function (e) {
		var wire = scheme.object;

		if (wire.onBuilding) {
			wire.from(e.clientX, e.clientY);
		}
		else {
			wire.to(e.clientX, e.clientY);
		}
	}, true);

	canvas.addEventLister("mousemove", function (e) {
		scheme.object.draw(e.clientX, e.clientY);
	}, true);
};

Scheme.prototype.createOpticLine = function () {
};

Scheme.prototype.createSource = function() {
};

Scheme.prototype.createEprSource = function() {
};

Scheme.prototype.createDetector = function() {
};

Scheme.prototype.createSplitter = function() {
};

var scheme = new Scheme();
